13863
18529
Questa domanda ha già risposte qui:
Express js - impossibile reindirizzare
(4 risposte)
Chiuso 7 anni fa.
Sto usando passportjs con un middleware di seguito. Si suppone di controllare se l'utente è loggato quando richiede determinate cose. Se non è registrato, dovrebbe essere reindirizzato alla pagina di accesso.
Ho un percorso di richiesta come segue:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Questo percorso verrà chiamato quando l'utente tenta di aggiornare una risorsa chiamata Fantasy Team nel sito web
auth.requiresLogin è un middleware come segue:
exports.requiresLogin = function (req, res, next) {
if (req.isAuthenticated ()) {
ritorno successivo ()
}
return res.redirect ("/ signin");
};
Dopo aver effettuato l'accesso al mio utente, ho simulato la scadenza della sessione eliminando il cookie di sessione. Successivamente tramite il sito web ho fatto una richiesta PUT "/ fantasyteams / 123" per aggiornare il numero 123 del fantasy team.
fantasyteams.update è semplicemente un'operazione di salvataggio di mongodb / mongoose:
exports.update = function (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (function (err) {
res.jsonp (fantasyteam);
});
};
Come previsto, il gestore del percorso (app.put ...) sopra ha rilevato la richiesta, passarla al middleware auth.requiresLogin per verificare se l'utente è connesso. Quindi risulta che l'utente non è connesso da quando l'ho cancellato il suo cookie di sessione. res.redirect viene chiamato come previsto. Tuttavia, il sito Web non reindirizza alla pagina di accesso. Lo vedo nei log dei comandi node.js:
PUT / signin 404 328 ms
Cos'ho fatto di sbagliato? 
Sembra che il problema sia che non hai un gestore di route per PUT / signin. La richiesta originale era un put, quindi quando reindirizza fa ancora parte della stessa richiesta "put" del browser. Basta aggiungere un gestore per put / post / qualunque cosa con app.all ('/ signin')
3
|
Non è la risposta che stai cercando? Sfoglia altre domande contrassegnate con i cookie di sessione node.js express passport.js o fai una domanda.